package com.example.server.utils;

import org.springframework.beans.BeanUtils;

public class AdvancedBeanUtils {

    /**
     * 封装BeanUtils.copyProperties
     * TODO：将一个实体类的值复制到另一个实体类
     * @param source 原实体类实例
     * @param target 新实体类
     * @param <T> 新实体类
     * @return 新实体类实例
     */
    public static <T> T copyProperties(Object source, Class<T> target){
        if(source == null) return null;
        try {
            // 使用反射newInstance()调用无参构造方法创建实例 需要保证target类有一个无参构造方法
            T result = target.newInstance();
            BeanUtils.copyProperties(source, result);
            return result;
        } catch (InstantiationException | IllegalAccessException e) {
            e.printStackTrace();
        }
        return null;
    }
}
